package com.itzhoun.fix;

/**
 * @author 周楠
 * @Date 2023/01/11/下午 10:51
 */
public class FixLazySingletonFirstMethod {

    /**
     * 懒加载无法保证线程 因此这里首先为了懒加载做了第一个方法修复
     * 优点: 在getInstance()方法上面加了一个 synchronized用于保证线程安全
     * 缺点: 经常调用getInstance()方法，不管有没有实例化 都会唤醒和阻塞线程
     *      为了避免线程上下文切换消耗大量时间，如果对象已经实例化了，没有必要在加锁，直接返回对象
     *
     * 因此懒加载
     *
     *
     *
     */

    private static FixLazySingletonFirstMethod singleton = null;

    FixLazySingletonFirstMethod() {
    }

    public static synchronized FixLazySingletonFirstMethod getInstance(){
        if (singleton == null){
            return new FixLazySingletonFirstMethod();
        }
        return singleton;

    }
}
